Parent-Child কম্পোনেন্ট কমিউনিকেশন (Input, Output)

Web Development - অ্যাঙ্গুলার (Angular) - কম্পোনেন্ট ইন্টারঅ্যাকশন |

Angular-এ Parent-Child কম্পোনেন্ট কমিউনিকেশন হল এমন একটি কৌশল, যেখানে প্যারেন্ট কম্পোনেন্ট (parent component) এবং চাইল্ড কম্পোনেন্ট (child component) একে অপরের সাথে ডেটা শেয়ার করে এবং একে অপরের সাথে যোগাযোগ স্থাপন করে। Angular-এ এই যোগাযোগ সাধারণত @Input() এবং @Output() ডেকোরেটর ব্যবহার করে করা হয়।


@Input() ডেকোরেটর

@Input() ডেকোরেটর প্যারেন্ট কম্পোনেন্ট থেকে চাইল্ড কম্পোনেন্টে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে প্যারেন্ট কম্পোনেন্ট তার ভ্যালু বা ডেটা চাইল্ড কম্পোনেন্টে ইনপুট হিসেবে প্রদান করতে পারে।

উদাহরণ: @Input()

  1. Parent Component: প্যারেন্ট কম্পোনেন্টে একটি ভ্যালু ডিফাইন করা হবে, যা চাইল্ড কম্পোনেন্টে পাঠানো হবে।
// parent.component.ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-parent',
  template: `<app-child [childData]="parentData"></app-child>`
})
export class ParentComponent {
  parentData = 'Hello from Parent!';
}
  1. Child Component: চাইল্ড কম্পোনেন্টে @Input() ডেকোরেটর ব্যবহার করে ইনপুট ডেটা গ্রহণ করা হবে।
// child.component.ts
import { Component, Input } from '@angular/core';

@Component({
  selector: 'app-child',
  template: `<p>{{ childData }}</p>`
})
export class ChildComponent {
  @Input() childData: string;  // প্যারেন্ট থেকে ডেটা ইনপুট হিসেবে গ্রহণ
}

এখানে, প্যারেন্ট কম্পোনেন্ট parentData ভ্যালুকে চাইল্ড কম্পোনেন্টে childData নামে পাঠাবে। চাইল্ড কম্পোনেন্ট এই ডেটা গ্রহণ করবে এবং তার টেমপ্লেটে প্রদর্শন করবে।


@Output() ডেকোরেটর

@Output() ডেকোরেটর চাইল্ড কম্পোনেন্ট থেকে প্যারেন্ট কম্পোনেন্টে ডেটা বা ইভেন্ট পাঠানোর জন্য ব্যবহৃত হয়। চাইল্ড কম্পোনেন্টে কোনো ইভেন্ট বা ফাংশন ট্রিগার হলে, সেটি প্যারেন্ট কম্পোনেন্টে পৌঁছানোর জন্য EventEmitter ব্যবহার করা হয়।

উদাহরণ: @Output()

  1. Child Component: চাইল্ড কম্পোনেন্টে একটি ইভেন্ট তৈরি করা হবে এবং সেটি @Output() ডেকোরেটরের মাধ্যমে প্যারেন্ট কম্পোনেন্টে পাঠানো হবে।
// child.component.ts
import { Component, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-child',
  template: `<button (click)="sendMessage()">Send Message</button>`
})
export class ChildComponent {
  @Output() messageEvent = new EventEmitter<string>();  // ইভেন্ট এমিটার

  sendMessage() {
    this.messageEvent.emit('Hello from Child!');  // প্যারেন্টে মেসেজ পাঠানো
  }
}
  1. Parent Component: প্যারেন্ট কম্পোনেন্টে (messageEvent) নামক ইভেন্টটি হ্যান্ডেল করা হবে এবং চাইল্ড কম্পোনেন্টের মাধ্যমে পাঠানো মেসেজ গ্রহণ করা হবে।
// parent.component.ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-parent',
  template: `<app-child (messageEvent)="receiveMessage($event)"></app-child>
             <p>{{ message }}</p>`
})
export class ParentComponent {
  message: string = '';

  receiveMessage(event: string) {
    this.message = event;  // চাইল্ড কম্পোনেন্ট থেকে মেসেজ গ্রহণ
  }
}

এখানে, চাইল্ড কম্পোনেন্ট একটি বাটনে ক্লিক করার মাধ্যমে প্যারেন্ট কম্পোনেন্টে একটি মেসেজ পাঠাবে। প্যারেন্ট কম্পোনেন্টে receiveMessage() ফাংশন ব্যবহার করে সেই মেসেজ গ্রহণ করা হবে।


প্যারেন্ট এবং চাইল্ড কম্পোনেন্টের মধ্যে যোগাযোগের প্রক্রিয়া

  1. @Input() ডেকোরেটরের মাধ্যমে প্যারেন্ট থেকে চাইল্ডে ডেটা পাঠানো হয়।
  2. @Output() ডেকোরেটরের মাধ্যমে চাইল্ড থেকে প্যারেন্টে ডেটা বা ইভেন্ট পাঠানো হয়।

এই প্রক্রিয়া খুবই সাধারণ এবং অধিকাংশ Angular অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে কম্পোনেন্টের মধ্যে ডেটা শেয়ারিং বা ইভেন্ট কমিউনিকেশন প্রয়োজন।


উপসংহার

  • @Input() এবং @Output() ডেকোরেটর ব্যবহার করে প্যারেন্ট-চাইল্ড কম্পোনেন্টের মধ্যে সহজভাবে ডেটা এবং ইভেন্ট শেয়ার করা যায়।
  • @Input() প্যারেন্ট থেকে চাইল্ডে ডেটা পাঠায়, এবং @Output() চাইল্ড থেকে প্যারেন্টে ইভেন্ট পাঠায়।
  • এই প্যাটার্নের মাধ্যমে Angular অ্যাপ্লিকেশনে ডেটা কমিউনিকেশন এবং কম্পোনেন্টের মধ্যে সম্পর্ক সহজভাবে স্থাপন করা সম্ভব।
Content added By
Promotion